package com.fcml.pattern.single;

/**
 * @author fcml
 * @date 2018/11/3
 *
 * 单例模式内部类的写法，推荐使用。线程安全。延迟加载。
 *
 */
public class InnerClassSingle {
    // 私有构造
    private InnerClassSingle(){}
    // 在本类中创建自身对象
    private static class InnerClass {
        // 类的静态属性只有在第一次加载类的时候才会初始化。
        private static InnerClassSingle innerClassSingle = new InnerClassSingle();
    }

    // 调用方法，装载内部类，初始化对象。Jvm帮我们保证了线程的安全性。
    public static InnerClassSingle getInnerClassSingle() {
        return InnerClass.innerClassSingle;
    }
}
